package com.code.soulnetty.modbus.client.channel;

import com.code.soulnetty.modbus.client.channel.impl.ProtocolChannel;
import com.code.soulnetty.modbus.client.service.ProtocolResponseService;
import io.netty.channel.Channel;

import java.net.SocketAddress;

/**
 * 获取channel的工厂类
 *
 * @author lyf
 * @date 2022-12-17 0:08
 */
public interface ChannelFactory {

    /**
     * 创建具体的 Channel
     *
     * @param remoteSocketAddress 连接地址
     * @param channel  通道信息
     * @param responseService 响应服务
     * @param retryCount 重试次数
     * @param timeOut 超时时间
     * @param reqIntl 轮训间隔时间
     * @return 通道信息
     */
    ProtocolChannel create(SocketAddress remoteSocketAddress, Channel channel,
                           ProtocolResponseService responseService, int retryCount, long timeOut, long reqIntl);
}
